// 线程退出函数 -> void pthread_exit(void *retval) -> 线程退出，但不释放虚拟空间
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<pthread.h>

// 子线程处理代码
void* callback(void* arg)
{
    for(int i = 0; i < 5; ++i)
    {
        printf("子线程:i = %d\n", i);
    }
    printf("子线程:%ld\n", pthread_self());

    return NULL;
}

int main()
{
    pthread_t tid; // 创建子线程
    pthread_create(&tid, NULL, callback, NULL);
    for(int i = 0; i < 5; ++i)
    {
        printf("主线程:i = %d\n", i);
    }
    printf("主线程:%ld\n", pthread_self());

    pthread_exit(NULL); // 主线程退出，但不释放虚拟空间

    return 0;
}

/*
    主线程:i = 0
    主线程:i = 1
    主线程:i = 2
    主线程:i = 3
    主线程:i = 4
    主线程:140292740380480
    子线程:i = 0
    子线程:i = 1
    子线程:i = 2
    子线程:i = 3
    子线程:i = 4
    子线程:140292740376320
*/